草庐IT

C++ 指向 vector 的指针

全部标签

C++输出二维 vector

我写了两个for循环,希望看看它们是否会输出名为data的vector中的每个值,但它不起作用。有一个与data[i].at(j)有关的错误,我不太明白。vectordata;//itisfilledwithsomeintegerswithxrowsandycolumnsfor(inti=0;i我也试过这个方法,但也不管用。data.at(i).at(j)有错误。for(inti=0;i这些中的任何一个都可以通过较小的修复工作,还是根本不起作用? 最佳答案 关注这里:data[i].at(j)当您在位置i索引您的vector时,您会

c++ - 能否从指向子对象的指针获得指向完整对象表示元素的指针?

让我们考虑这段代码:inti;intis[10]{};unsignedchar*p=reinterpret_cast(&i);//pdefinedtopointtotheobject-representationofthefirstelementofarrayintsunsignedchar*ps=reinterpret_cast(&is[0]);p+=sizeof(int);ps+=sizeof(int);//nowpspointstotheendofints[0]andppointtotheendofi;p+=sizeof(int);//Undefinedbehavioraccor

c++ - 将 C++ lambda 复制到函数指针引用

我不确定我是否定义了以下情况下的行为:我的函数指针类型:typedefvoid(*DoAfter_cb_type)(void);应该分配回调的函数:voidDoSomething(DoAfter_cb_type&DoAfter_cb){//...DoAfter_cb=[](){//...};}来电者:DoAfter_cb_typeDoAfter_cb=nullptr;DoSomething(DoAfter_cb);//HereissomethingthathastobedoneafterDoSomethingbutbeforeDoAfter_cb.if(DoAfter_cb!=null

c++ - 有没有办法在不创建变量的情况下调用需要指针的函数?

我有这个函数调用:uint32_tfunc(uint32_t*a,uint32_tb)我想用这样的整数文字来调用它:func(0,b);其中b是一个uint32_t。有没有什么方法可以在不创建中间变量的情况下做到这一点?IE。我想避免这样做:uint32_ta=0;func(a,b); 最佳答案 辅助类:structint_ptr{intv;operatorint*(){return&v;}};intfoo(int*a,intb);voidbar(){foo(int_ptr{0},0);}这会导致构造一个临时int_ptr类,将其v

c++ - 删除静态 vector 中的唯一类对象指针

假设我们创建一个名为Window的简单类,并希望使用std::unique_ptrvector跟踪我们拥有的所有窗口:#include#includeclassWindow{public:staticstd::vector>MemberPointers;private:intwidth;intheight;};我们在这个类的构造函数中分配一个指向创建对象的指针。根据BjarneStroustrup的“C++之旅”,std::unique_ptr在超出范围时会被释放,就像常规局部变量一样。这是否意味着,在此类的解构器中,我不需要调用任何东西来删除指向该对象的vector元素?如果不是,我

c++ - 指向 std::invoke 中成员函数对象的指针

为什么std::invoke不能使用指向成员的指针,而成员是带参数的函数对象?像这样:structMyClass{std::functionfunctor{[](intarg){printf("%d\n",arg);}};};intmain(){MyClassmc;std::invoke(&MyClass::functor,mc,110);}打印:'std::invoke':nomatchingoverloadedfunctionfound.我在VisualC++和g++中检查了这一点。此外,std::is_invocable_v声称此仿函数不可调用,这绝对是错误的。我是否遗漏了什么或

c++ - 为什么 "this"指针用于调用派生成员函数?

在this上阅读关于虚函数的教程(与本例无关)链接,我找到了这段代码。classWeapon{public:voidfeatures(){coutWeapon::features();cout类Weapon派生自类Bomb,其中调用了Weapon的成员函数。为什么使用“this”指针调用函数Weapon::features()?这不是已经隐式给出了吗? 最佳答案 this是隐式给出的,是否显式编写通常是风格问题。在您的情况下,我会说它不会提高可读性。然而,在其他情况下,显式写入this是有意义的,甚至是必要的为了避免局部变量和数据成

c++ - 实现 std::vector::push_back 强异常安全

我正在根据2018年后的圣地亚哥草案(N4791)实现我自己的vector,并且有一些关于实现强异常安全性的问题。这是一些代码:templatevoidVector::push_back(constT&value){if(buffer_capacity==0){this->Allocate(this->GetSufficientCapacity(1));}if(buffer_sizeConstruct(value);return;}autonew_buffer=CreateNewBuffer(this->GetSufficientCapacity(buffer_size+1),allo

c++ - boost static_vector 而不是 std::is_trivially_destructible

根据thisexample(左例)#include#includestructX{intk;std::arraya;boost::container::static_vectorb;~X()=default;};inthuh(){std::arrayx;return0;}看起来像boost::container::static_vector当T时可以轻易破坏是(当b被销毁时,不会在X上循环)。huh优化为xoreax,eax;ret(即return0不遍历数组。当我改用具有非平凡析构函数的包含类型时(右例)#include#includestructY{~Y();};structX{i

c++ - 是否可以重载模板函数以与 std::vector 的元素一起使用?

我正在尝试让一个函数采用通用std::vector(templatestd::vector,然后调用一个模板函数,该函数在其所有元素上都具有针对特定(抽象)类型的特化。我正在尝试弄清楚如何使用专用版本,同时仍然能够使用通用版本,但我没有成功。我使用的是visualstudio2019。这是我的代码:#include#include//theabstracttypestructFoo{virtualintbar(unsignedint)const=0;};//The'templatefunction'Imentionedtemplatevoiddo_something_with_an_e